import { defineStore } from 'pinia';
import { ref } from 'vue';
import { initDynamicRoutes } from "@/router/dynamicRoutes"; // 导入初始化动态路由的方法
import type { RouteRecordRaw, RouteRecordRedirectOption } from 'vue-router';
 
// 定义菜单项类型，确保 `name` 是 `string`
type MenuItem = Omit<RouteRecordRaw, 'component' | 'children' | 'redirect'> & {
  name: string; // 必须有 name 属性
  path: string; // 必须有 path 属性
  component?: () => Promise<Component>; // 用于动态加载组件的路径
  children?: MenuItem[]; // 子路由类型
  redirect?: string; // 调整 redirect 为更简单的 string 类型
  meta?: {
    title: string;
  };
};
// 定义路由数据 Store
export const useRouteStore = defineStore('route', () => {
  // 存储菜单数据
  const menuData = ref<MenuItem[]>([]); // 根据你的菜单数据结构调整类型
 
  // 存储动态路由数据
  const dynamicRoutes = ref<MenuItem[]>([]);
 
  // 存储是否已初始化路由的状态
  const isRoutesInitialized = ref<boolean>(false);
 
  // 存储上一次页面刷新的路由
  const beforeRouter = ref<string>('');
 
  // 初始化动态路由
  const setDynamicRoutes = (menu: any[]) => {
    // 只在未初始化路由时执行
    if (!isRoutesInitialized.value) {
      // 调用 initDynamicRoutes 函数来生成动态路由
      initDynamicRoutes(menu);
 
      // 将菜单数据存储到状态中
      menuData.value = menu;
 
      // 设置已初始化状态
      isRoutesInitialized.value = true;
    }
  };
 
  // 获取动态路由
  const getDynamicRoutes = () => {
    return dynamicRoutes.value;
  };
 
  // 更新动态路由
  const setUpdatedDynamicRoutes = (routes: MenuItem[]) => {
    dynamicRoutes.value = routes;
  };
 
  return {
    menuData,
    dynamicRoutes,
    isRoutesInitialized, // 公开这个状态，方便其他地方判断
    setDynamicRoutes,
    getDynamicRoutes,
    setUpdatedDynamicRoutes, // 更新动态路由的函数
    beforeRouter
  };
});